1. Field of the Invention
The present invention relates to the placement of a virtual machine, and more specifically, methods and systems for the placement of a virtual machine within a plurality of servers.
2. Description of Related Art
In multi-processor servers, processors and memory are commonly configured into nodes that are tied together by a cache coherent interconnect. While these multi-processor systems may conform to Symmetrical Multi-Processor programming models, they are commonly not symmetric with respect to memory access times from different processors. This class of multi-processor server is commonly known as cache coherent non-uniform memory access (cc-NUMA) servers. The non-uniformity in this class of servers describes the memory access time difference between memory accessed by a processor close to the memory controller versus memory accessed by a processor on a different node. When processors reference memory off-node, the software pays a performance penalty for this off-node memory reference. It is beneficial, therefore, for the operating system, or the hypervisor, to schedule processes, or virtual machines, within a cc-NUMA node such that the software can experience “uniform, and optimal, memory access time” within a non-uniform memory system.
The difficulties associated with scheduling virtual machines within a common node are understood, and a variety of solutions have been implemented within the computing industry. These classes of solutions are generally referred to as cc-NUMA-based scheduling and memory allocation algorithms. However, the applicability and usefulness of these approaches are limited to the physical resources available on one server—in other words, these algorithms only understand, and optimize within, a single cc-NUMA-based server. This approach may result in memory fragmentation if a virtual machine is placed on a server where the virtual machine's memory cannot be allocated wholly to a single node, resulting in the memory being split across multiple cc-NUMA nodes. The virtual machine may experience memory access time degradation whenever the processor accesses the virtual machine's memory in other nodes. Accordingly, there is a need for improved methods and systems for optimizing placement of virtual machines.